package com.gzcstec.gateway.config;

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.cors.CorsConfiguration;
import org.springframework.web.cors.UrlBasedCorsConfigurationSource;
import org.springframework.web.filter.CorsFilter;

import java.util.Arrays;

/**
 * 跨域配置类
 */
@Configuration
public class CorsConfig {

    @Bean
    public CorsFilter corsFilter() {
        final UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource();
        CorsConfiguration config = new CorsConfiguration();
        //允许cookie跨域传递
        config.setAllowCredentials(true);
        //支持所有的请求头
        config.setAllowedHeaders(Arrays.asList("*"));
        //支持所有的方法GET/POST/PUT/DELETE
        config.setAllowedMethods(Arrays.asList("*"));
        //支持所有的原域，实际生产设置为对外暴露的域名
        config.setAllowedOrigins(Arrays.asList("*"));
        //跨域请求的缓存，如果第一次验证通过，则在该时间区间内，不检查跨域，单位秒
        config.setMaxAge(300l);
        //支持所有的服务都跨域访问
        source.registerCorsConfiguration("/**" , config);
        return new CorsFilter(source);
    }
}
